# knitr::spin("acumula22_hist.R", knit = FALSE) # Crea .Rmd
# knitr::purl("acumula22_hist.Rmd", documentation = 2) # Crea .R spin

# PENDIENTE:
#   Generar un fichero de cambios:
#         Bucle last:2 / Empezar solo con last
#         AƱadir ficheros 2:(last - 1) a files[last] y calcular diferencia/error y lag/horizonte
#   AnÔlisis descriptivo: dispersión/boxplot error|lag

library(dplyr, warn.conflicts = FALSE)
library(tidyr)
files <- dir(pattern = paste0('^acumula22_\\d{2}_\\d{2}_\\d{2}\\.RData'))
# Los nombres de los archivos contienen las fechas de reporte (datos del dĆ­a anterior)
fechas.txt <- substr(files, 11, 18)
fechas <- as.Date(fechas.txt, format = "%y_%m_%d") 
last <- length(files)
semanas <- 6
fechas.semanas <- fechas[last] - 7*(semanas:1) - 1
fecha.ini <- fechas.semanas[1]
colors <- gray((last - seq_along(files))/last)


# Cargar datos
datos <- lapply(files, function(f) {
  load(f)
  return(acumula22)
})
names(datos) <- fechas

# Obtener niveles
load("../ccaas.RData")
iso <- names(datos[[1]]) # names(ccaas) 
respuestas <- c("confirmados", "hospitalizados", "uci", "fallecidos") # names(datos[[1]][[1]])

Se genera un grÔfico con toda la serie hasta 2021-07-21 y otro de las últimas 6 semanas (desde 2021-06-09).

El color de las lƭneas se corresponde con la fecha en la que se reportaron los datos (se muestra tambiƩn el dƭa del mes en el segundo grƔfico).

xlim2 <- c(fecha.ini, max(fechas) + 1)
plot(NULL ,xaxt='n',yaxt='n',bty='n',ylab='',xlab='', xlim=0:1, ylim=0:1)
legend("top", rev(names(datos)), lty = 1, col = rev(colors), ncol = 5)

for (ca in iso) { # ca <- "ES"
  cat("\n\n# ",  ccaas[ca], "\n\n")

  for (r in respuestas) {  # r <- "confirmados"
    cat("\n\n## ", r, "\n\n") 
    
    ymax <- max(sapply(datos, function(d) max(d[[ca]][[r]]$observado)))
    
    old.par <- par(mfrow = c(1, 2))

    plot(observado ~ fecha, data = datos[[last]][[ca]][[r]], 
         type = "l", main = paste(ccaas[ca], r), xlab = "Fecha", ylab = r,
         col = colors[last], ylim = c(0, ymax))
    lapply(1:(last-1), function(i) 
         lines(observado ~ fecha, data = datos[[i]][[ca]][[r]], 
               col = colors[i]))     
    # legend("topleft", rev(names(datos)), lty = 1, col = rev(colors))
    

    d <- filter(datos[[last]][[ca]][[r]], fecha > fecha.ini - 1)
    ymin <- min(d$observado) * 0.95
    plot(observado ~ fecha, data = d, 
         type = "l", main = paste(ccaas[ca], r), xlab = "Fecha", ylab = r,
         lwd = 2, col = colors[last], 
         xlim = xlim2, ylim = c(ymin, ymax))
    abline(v = fechas.semanas, lty = 3, col = "lightgray")
    lapply(1:(last-1), function(i) 
         lines(observado ~ fecha, data = datos[[i]][[ca]][[r]], 
               col = colors[i], subset = fecha > fecha.ini - 1))
    # legend("topleft", rev(names(datos)), lty = 1, col = rev(colors))
    lapply(1:last, function(i) {
        d <- datos[[i]][[ca]][[r]]
        text(d[nrow(d), c("fecha", "observado")], 
             labels = format(fechas[i], "%d"), pos = 4)
    })
    
    par(old.par)
    
  } # for (r in respuestas)  
} # for (ca in iso)

EspaƱa

confirmados

hospitalizados

uci

fallecidos

AndalucĆ­a

confirmados

hospitalizados

uci

fallecidos

Aragón

confirmados

hospitalizados

uci

fallecidos

Asturias

confirmados

hospitalizados

uci

fallecidos

Canarias

confirmados

hospitalizados

uci

fallecidos

Cantabria

confirmados

hospitalizados

uci

fallecidos

Castilla y León

confirmados

hospitalizados

uci

fallecidos

Castilla-La Mancha

confirmados

hospitalizados

uci

fallecidos

CataluƱa

confirmados

hospitalizados

uci

fallecidos

Ceuta y Melilla

confirmados

hospitalizados

uci

fallecidos

Comunidad Valenciana

confirmados

hospitalizados

uci

fallecidos

Extremadura

confirmados

hospitalizados

uci

fallecidos

Galicia

confirmados

hospitalizados

uci

fallecidos

Islas Baleares

confirmados

hospitalizados

uci

fallecidos

La Rioja

confirmados

hospitalizados

uci

fallecidos

Madrid

confirmados

hospitalizados

uci

fallecidos

Murcia

confirmados

hospitalizados

uci

fallecidos

PaĆ­s Vasco

confirmados

hospitalizados

uci

fallecidos